#pragma once

#include <string>
#include "JSON.h"

namespace NahidaProject {

	class __declspec(dllexport) JSONParser{
	public:
		JSONParser();
		~JSONParser();

		void LoadFile(const std::string & str);
	    NahidaProject::JSON Parse();

	private:
		void SkipWhiteSpace();
		char GetNextToken();

		NahidaProject::JSON ParseNull();
		NahidaProject::JSON ParseBool();
		NahidaProject::JSON ParseNumber();
		std::string ParseString();
		NahidaProject::JSON ParseArray();
		NahidaProject::JSON ParseObject();

		bool InRange(int x, int lower, int upper){
			return (x >= lower && x <= upper);
		}

	private:
		std::string targetString;
		size_t m_idx;
	};

}
